package classes.com.daos;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import classes.com.misBeans.Empresa;

public class EmpresaDAOImplementacion implements EmpresaDAO {

	private JdbcTemplate plantilla;

	public void setDataSource(DataSource dataSource) {
		// se instancia plantilla con la inyeccion del datasource
		this.plantilla = new JdbcTemplate(dataSource);
	}

	@Override
	public boolean ingresarEmpleado(Empresa t) {
		// TODO Auto-generated method stub
		// ingresamos 1 trabajador con el metodo update de plantilla
		try {
			this.plantilla.update("INSERT INTO trabajadores(id,nombre,departamento) VALUES(?,?,?)", t
					.getId(), t.getNombre(), t.getDepartamento());
			return true;
		} catch (DataAccessException e) {
			return false;
		}
	}

	@Override
	public List<Empresa> listarEmpleados() {
		// TODO Auto-generated method stub
		// realizamos la consulta de de trabajadores
		return this.plantilla.query("SELECT * FROM trabajadores" +
				" ORDER BY id DESC LIMIT 10",
		// se mapea el resultado de la consulta para que query
				// retorne una lista con objetos de tipo Empresa
				new RowMapper<Empresa>() {
					public Empresa mapRow(ResultSet rs, int rowNum)
							throws SQLException {
						Empresa t = new Empresa();
						t.setId(rs.getString("id"));
						t.setNombre(rs.getString("nombre"));
						t.setDepartamento(rs.getString("departamento"));
						return t;
					}
				});
	}

}
